/**
 * 设备管理相关API
 * 封装设备管理、统计、地图显示等功能的接口
 */

import request from './request.js';

// API路径配置
const API_ROUTES = {
  DEVICE: {
    // 设备基础操作
    LIST: '/jeecg-boot/product/list',              // 获取设备列表
    DETAIL: '/jeecg-boot/product/detail',          // 获取设备详情
    ADD: '/jeecg-boot/product/add',                // 添加设备
    UPDATE: '/jeecg-boot/product/edit',            // 更新设备
    DELETE: '/jeecg-boot/product/delete',          // 删除设备
    
    // 设备分组
    GROUP_LIST: '/jeecg-boot/product/groups',      // 获取分组列表
    GROUP_ADD: '/jeecg-boot/product/group/add',    // 添加分组
    GROUP_UPDATE: '/jeecg-boot/product/group/update', // 更新分组
    GROUP_DELETE: '/jeecg-boot/product/group/delete', // 删除分组
    
    // 设备统计
    STATS: '/jeecg-boot/product/stats',            // 设备基础统计
    ENERGY_STATS: '/jeecg-boot/product/energy/stats', // 能耗统计
    CONTROL_STATS: '/jeecg-boot/product/control/stats', // 控制操作统计
    
    // 设备地图
    MAP_DATA: '/jeecg-boot/product/map',           // 获取地图数据
    
    // 设备远程控制
    CONTROL: '/jeecg-boot/product/control',        // 控制设备
    CONTROL_HISTORY: '/jeecg-boot/product/control/history', // 控制历史
    
    // 设备分类
    CATEGORIES: '/jeecg-boot/product/categories',  // 获取设备分类
  }
};

/**
 * 设备API封装
 */
export default {
  /**
   * 获取设备列表
   * @param {Object} params - 查询参数 {unitId, categoryId, status, groupId, page, limit}
   * @returns {Promise} 设备列表数据
   */
  getDeviceList(params = {}) {
    return request({
      url: API_ROUTES.DEVICE.LIST,
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 获取设备详情
   * @param {String} deviceId - 设备ID
   * @returns {Promise} 设备详情数据
   */
  getDeviceDetail(deviceId) {
    return request({
      url: API_ROUTES.DEVICE.DETAIL,
      method: 'GET',
      data: { deviceId }
    });
  },
  
  /**
   * 添加设备
   * @param {Object} deviceData - 设备数据
   * @returns {Promise} 添加结果
   */
  addDevice(deviceData) {
    return request({
      url: API_ROUTES.DEVICE.ADD,
      method: 'POST',
      data: deviceData
    });
  },
  
  /**
   * 更新设备
   * @param {Object} deviceData - 设备数据，包含deviceId
   * @returns {Promise} 更新结果
   */
  updateDevice(deviceData) {
    return request({
      url: API_ROUTES.DEVICE.UPDATE,
      method: 'PUT',
      data: deviceData
    });
  },
  
  /**
   * 删除设备
   * @param {String} deviceId - 设备ID
   * @returns {Promise} 删除结果
   */
  deleteDevice(deviceId) {
    return request({
      url: API_ROUTES.DEVICE.DELETE,
      method: 'DELETE',
      data: { deviceId }
    });
  },
  
  /**
   * 获取设备分组列表
   * @param {Object} params - 查询参数 {unitId}
   * @returns {Promise} 分组列表数据
   */
  getDeviceGroups(params = {}) {
    return request({
      url: API_ROUTES.DEVICE.GROUP_LIST,
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 添加设备分组
   * @param {Object} groupData - 分组数据
   * @returns {Promise} 添加结果
   */
  addDeviceGroup(groupData) {
    return request({
      url: API_ROUTES.DEVICE.GROUP_ADD,
      method: 'POST',
      data: groupData
    });
  },
  
  /**
   * 更新设备分组
   * @param {Object} groupData - 分组数据，包含groupId
   * @returns {Promise} 更新结果
   */
  updateDeviceGroup(groupData) {
    return request({
      url: API_ROUTES.DEVICE.GROUP_UPDATE,
      method: 'PUT',
      data: groupData
    });
  },
  
  /**
   * 删除设备分组
   * @param {String} groupId - 分组ID
   * @returns {Promise} 删除结果
   */
  deleteDeviceGroup(groupId) {
    return request({
      url: API_ROUTES.DEVICE.GROUP_DELETE,
      method: 'DELETE',
      data: { groupId }
    });
  },
  
  /**
   * 获取设备统计数据
   * @param {Object} params - 查询参数 {unitId, categoryId, timeRange}
   * @returns {Promise} 统计数据
   */
  getDeviceStats(params = {}) {
    return request({
      url: API_ROUTES.DEVICE.STATS,
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 获取设备能耗统计
   * @param {Object} params - 查询参数 {unitId, categoryId, deviceId, timeRange}
   * @returns {Promise} 能耗统计数据
   */
  getEnergyStats(params = {}) {
    return request({
      url: API_ROUTES.DEVICE.ENERGY_STATS,
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 获取设备控制操作统计
   * @param {Object} params - 查询参数 {unitId, categoryId, deviceId, timeRange}
   * @returns {Promise} 控制操作统计数据
   */
  getControlStats(params = {}) {
    return request({
      url: API_ROUTES.DEVICE.CONTROL_STATS,
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 获取设备地图数据
   * @param {Object} params - 查询参数 {unitId, categoryId, status}
   * @returns {Promise} 地图数据
   */
  getDeviceMapData(params = {}) {
    return request({
      url: API_ROUTES.DEVICE.MAP_DATA,
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 控制设备
   * @param {String} deviceId - 设备ID
   * @param {Object} controlData - 控制参数
   * @returns {Promise} 控制结果
   */
  controlDevice(deviceId, controlData) {
    return request({
      url: API_ROUTES.DEVICE.CONTROL,
      method: 'POST',
      data: {
        deviceId,
        ...controlData
      }
    });
  },
  
  /**
   * 获取设备控制历史
   * @param {String} deviceId - 设备ID
   * @param {Object} params - 查询参数 {page, limit, timeRange}
   * @returns {Promise} 控制历史数据
   */
  getControlHistory(deviceId, params = {}) {
    return request({
      url: API_ROUTES.DEVICE.CONTROL_HISTORY,
      method: 'GET',
      data: {
        deviceId,
        ...params
      }
    });
  },
  
  /**
   * 获取设备分类
   * @param {Object} params - 查询参数 {unitId}
   * @returns {Promise} 设备分类数据
   */
  getDeviceCategories(params = {}) {
    return request({
      url: API_ROUTES.DEVICE.CATEGORIES,
      method: 'GET',
      data: params
    });
  }
}; 